////////////////////////////////////////////////////////////////////////////////
// Filename: texture.ps
////////////////////////////////////////////////////////////////////////////////


/////////////
// GLOBALS //
/////////////
Texture2D originalTexture	: register(t0);
Texture2D blurredTexture	: register(t1);
Texture2D depthTexture		: register(t2);

// SAMPLERSTATE //
SamplerState samLinear
{
    Filter = MIN_MAG_MIP_LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
};


//////////////
// TYPEDEFS //
//////////////
struct PixelInputType
{
    float4 position : SV_POSITION;
    float2 tex		: TEXCOORD0;
};


static const float focalZ = 0.5f;

////////////////////////////////////////////////////////////////////////////////
// Pixel Shader
////////////////////////////////////////////////////////////////////////////////
float4 TexturePixelShader(PixelInputType input) : SV_TARGET
{
	float4 blurcolor = blurredTexture.Sample(samLinear, input.tex);
	float4 basecolor = originalTexture.Sample(samLinear, input.tex);
    float4 zPos = depthTexture.Sample(samLinear, input.tex); /*[0.5,1]*/

	//abs for absolute value of range of Z
	float blurcoeff = abs(zPos.x- focalZ) * 1.75;	
	
	//return blurcolor;
	return lerp(basecolor, blurcolor, blurcoeff);

}